This specification relates to software compilation on mobile devices.
Many applications are provided in a machine-independent intermediate code. The intermediate code is interpreted by a virtual machine which, in some cases, also translates the code into native, i.e., machine, instructions. However, execution by interpretation has an adverse effect on performance. Just in time compilers are a common way to improve performance for intermediate code that runs on a virtual machine, e.g., Java bytecode. The compiled native code executes faster, but native code generally requires more storage space than intermediate code.
For devices that have low computing power and memory capacity, for example cell phones and other mobile devices, the just in time compilation may be slow and the resulting native code may be of poor quality.